﻿#pragma once

#include "../../Server/MirEnvir/Envir.h"
#include <any>

using namespace Server::MirDatabase;
using namespace Server::MirEnvir;
using namespace Server::MirObjects;

namespace Server::MirForms::Systems
{
    class MonsterTunerForm : public System::Windows::Forms::Form
    {
    public:
        virtual ~MonsterTunerForm()
        {
            delete components;
            delete SelectMonsterComboBox;
            delete updateButton;
            delete CoolEyeTextBox;
            delete label12;
            delete ViewRangeTextBox;
            delete label33;
            delete MSpeedTextBox;
            delete label6;
            delete ASpeedTextBox;
            delete label5;
            delete LevelTextBox;
            delete label4;
            delete EffectTextBox;
            delete label2;
            delete AgilityTextBox;
            delete label26;
            delete AccuracyTextBox;
            delete label27;
            delete HPTextBox;
            delete label25;
            delete MaxSCTextBox;
            delete label22;
            delete MinSCTextBox;
            delete label23;
            delete MaxMCTextBox;
            delete label18;
            delete MinMCTextBox;
            delete label19;
            delete MaxDCTextBox;
            delete label20;
            delete MinDCTextBox;
            delete label21;
            delete MaxMACTextBox;
            delete label16;
            delete MinMACTextBox;
            delete label17;
            delete MaxACTextBox;
            delete label15;
            delete MinACTextBox;
            delete label14;
            delete MonsterNameTextBox;
            delete label3;
            delete SaveButton;
        }

        Server::MirEnvir::Envir *getEnvir() const;

        MonsterTunerForm();

    private:
        void SelectMonsterComboBox_SelectedIndexChanged(std::any sender, EventArgs *e);

        void updateButton_Click(std::any sender, EventArgs *e);

        void SaveButton_Click(std::any sender, EventArgs *e);


        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::IContainer *components = nullptr;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected:
        void Dispose(bool disposing) override;

        #pragma region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
    private:
        void InitializeComponent();

        #pragma endregion

        System::Windows::Forms::ComboBox *SelectMonsterComboBox;
        System::Windows::Forms::Button *updateButton;
        System::Windows::Forms::TextBox *CoolEyeTextBox;
        System::Windows::Forms::Label *label12;
        System::Windows::Forms::TextBox *ViewRangeTextBox;
        System::Windows::Forms::Label *label33;
        System::Windows::Forms::TextBox *MSpeedTextBox;
        System::Windows::Forms::Label *label6;
        System::Windows::Forms::TextBox *ASpeedTextBox;
        System::Windows::Forms::Label *label5;
        System::Windows::Forms::TextBox *LevelTextBox;
        System::Windows::Forms::Label *label4;
        System::Windows::Forms::TextBox *EffectTextBox;
        System::Windows::Forms::Label *label2;
        System::Windows::Forms::TextBox *AgilityTextBox;
        System::Windows::Forms::Label *label26;
        System::Windows::Forms::TextBox *AccuracyTextBox;
        System::Windows::Forms::Label *label27;
        System::Windows::Forms::TextBox *HPTextBox;
        System::Windows::Forms::Label *label25;
        System::Windows::Forms::TextBox *MaxSCTextBox;
        System::Windows::Forms::Label *label22;
        System::Windows::Forms::TextBox *MinSCTextBox;
        System::Windows::Forms::Label *label23;
        System::Windows::Forms::TextBox *MaxMCTextBox;
        System::Windows::Forms::Label *label18;
        System::Windows::Forms::TextBox *MinMCTextBox;
        System::Windows::Forms::Label *label19;
        System::Windows::Forms::TextBox *MaxDCTextBox;
        System::Windows::Forms::Label *label20;
        System::Windows::Forms::TextBox *MinDCTextBox;
        System::Windows::Forms::Label *label21;
        System::Windows::Forms::TextBox *MaxMACTextBox;
        System::Windows::Forms::Label *label16;
        System::Windows::Forms::TextBox *MinMACTextBox;
        System::Windows::Forms::Label *label17;
        System::Windows::Forms::TextBox *MaxACTextBox;
        System::Windows::Forms::Label *label15;
        System::Windows::Forms::TextBox *MinACTextBox;
        System::Windows::Forms::Label *label14;
        System::Windows::Forms::TextBox *MonsterNameTextBox;
        System::Windows::Forms::Label *label3;
        System::Windows::Forms::Button *SaveButton;
    };
}
